package org.sloth.core.load
{
	import org.sloth.core.IData;
	import org.sloth.core.IUID;
	import org.sloth.core.StringUtil;
	
	/**
	 * 资源加载器(<code>LoadMgr</code>)关联的加载任务
	 */	
	public class LoadVO implements IUID, IData
	{
//============================================================================
//PROPERTY
//============================================================================
		private var _uid:String;
		
		private var _url:String;
		private var _type:String;
		private var _completeCB:Function;
		private var _progressCB:Function;
		private var _errorCB:Function;
		private var _data:*;
		
		private var _content:*;
//============================================================================
//CONSTRUCTOR
//============================================================================
		/**
		 * 构造函数
		 * @param url 资源url
		 * @param type 资源类型，由<code>LoadType</code>定义
		 * @param completeCB 资源加载完成后回调函数
		 * @param progressCB 资源加载进度回调函数
		 * @param errorCB 资源加载出错回调函数
		 * @param data 加载资源需要传递的数据
		 * 
		 */		
		public function LoadVO(
			url:String, 
			type:String, 
			completeCB:Function = null, 
			progressCB:Function = null, 
			errorCB:Function = null, 
			data:* = null)
		{
			_uid = StringUtil.createUID();
			
			_url = url;
			_type = type;
			_completeCB = completeCB;
			_progressCB = progressCB;
			_errorCB = errorCB;
			_data = data;
		}
//============================================================================
//GETTER/SETTER
//============================================================================
		public function get uid():String
		{
			return _uid;
		}
		
		public function set uid(value:String):void
		{
			_uid = value;
		}

		/**
		 * 资源url
		 */
		public function get url():String
		{
			return _url;
		}

		/**
		 * 资源类型，由<code>LoadType</code>定义
		 */
		public function get type():String
		{
			return _type;
		}

		/**
		 * 资源加载完成后回调函数
		 */
		public function get completeCB():Function
		{
			return _completeCB;
		}

		/**
		 * 资源加载进度回调函数
		 */
		public function get progressCB():Function
		{
			return _progressCB;
		}

		/**
		 * 资源加载出错回调函数
		 */
		public function get errorCB():Function
		{
			return _errorCB;
		}

		/**
		 * 加载资源需要传递的数据
		 */
		public function get data():*
		{
			return _data;
		}
		
		public function set data(value:*):void
		{
			_data = value;
		}

		/**
		 * 资源实体
		 */
		public function get content():*
		{
			return _content;
		}

		/**
		 * @private
		 */
		public function set content(value:*):void
		{
			_content = value;
		}


	}
}